Page({
    data: {
        longitude: 116.397428,
        latitude: 39.90923,
        markers: [],
        selectedLocation: null,
        searchKeyword: ''
    },

    onLoad() {
        this.getCurrentLocation()
    },

    onReady() {
        this.mapCtx = wx.createMapContext('map')
    },

    // 获取当前位置
    getCurrentLocation() {
        wx.getLocation({
            type: 'gcj02',
            success: (res) => {
                const { longitude, latitude } = res
                this.setData({
                    longitude: longitude,
                    latitude: latitude
                })
                this.addMarker(longitude, latitude, '我的位置')
            },
            fail: (err) => {
                console.error('获取位置失败:', err)
                if (err.errMsg.includes('auth deny')) {
                    this.showLocationAuthModal()
                }
            }
        })
    },

    // 地图区域变化
    onRegionChange(e) {
        console.log('地图区域变化:', e)
    },

    // 地图点击
    onMapTap(e) {
        const { longitude, latitude } = e.detail
        this.reverseGeocode(longitude, latitude)
    },

    // 定位到当前位置
    onCurrentLocation() {
        this.getCurrentLocation()
    },

    // 搜索输入
    onSearchInput(e) {
        this.setData({
            searchKeyword: e.detail.value
        })
    },

    // 搜索地点
    onSearch() {
        if (!this.data.searchKeyword.trim()) {
            return
        }

        // 这里可以调用地图搜索API
        // 由于需要地图SDK，这里简化处理
        wx.showToast({
            title: '搜索功能开发中',
            icon: 'none'
        })
    },

    // 逆地理编码
    reverseGeocode(longitude, latitude) {
        // 简化版本，实际应该调用地图API
        const location = {
            longitude: longitude,
            latitude: latitude,
            name: `位置(${latitude.toFixed(4)},${longitude.toFixed(4)})`,
            address: '点击地图选择的位置'
        }

        this.setData({
            selectedLocation: location
        })
        this.addMarker(longitude, latitude, '选择的位置')
    },

    // 添加标记
    addMarker(longitude, latitude, title) {
        this.setData({
            markers: [{
                id: 1,
                longitude: longitude,
                latitude: latitude,
                title: title,
                iconPath: '/icons/marker.png',
                width: 30,
                height: 30
            }]
        })
    },

    // 显示定位权限弹窗
    showLocationAuthModal() {
        wx.showModal({
            title: '需要位置权限',
            content: '请在小程序设置中开启位置权限',
            confirmText: '去设置',
            success: (res) => {
                if (res.confirm) {
                    wx.openSetting()
                }
            }
        })
    },

    onCancel() {
        wx.navigateBack()
    },

    onConfirm() {
        if (this.data.selectedLocation) {
            // 将选择的位置传递回发帖页面
            const pages = getCurrentPages()
            const prevPage = pages[pages.length - 2]
            prevPage.setData({
                selectedLocation: this.data.selectedLocation
            })
            wx.navigateBack()
        }
    }
})